<?php
/*
 * [JINYUN!] (C)2001-2099 Jinyunweb.com
 * This is NOT a freeware, use is subject to license terms
 * $Id: 2017-12-13 03:39:35 apple $
*/
defined('BY_JYA') or exit('error');
$_RQ['op']=$_RQ['op']?$_RQ['op']:'get';
$return=array();
if($_RQ['basicname']){
	$_SESSION['plugin_name'] = $_RQ['basicname'];
}
$tabs=array(
		array('op'=>'get','title'=>'DIY小程序分类'),
		array('op'=>'list','title'=>'DIY小程序列表'),
		array('op'=>'edit','title'=>'创建DIY小程序'),
		array('op'=>'renzheng','title'=>'域名认证文件上传'),
);
$statuss=array(
	'0'=>'待上传代码',
	'1'=>'待提交审核',
	'2'=>'等待审核结果',
	'3'=>'待发布',
	'4'=>'发布成功'
);
$return['types']=array(
	'1'=>'DIY小程序',
	'2'=>'插件小程序',
	'7'=>'打包小程序',
	'8'=>'多页小程序',
);
$return['apptypes']=array(
	'wxapp'=>'微信小程序',
	'ttapp'=>'头条/抖音小程序',
	'aliapp'=>'支付宝小程序',
	'baiduapp'=>'百度小程序',
	'qqapp'=>'QQ小程序',
);
if($_SESSION['plugin_name']){
	if($_SESSION['plugin_name'] !='core' && method_exists(cfc($_SESSION['plugin_name']),'actiontypes')){
		$_SESSION['actiontypes']=cfc($_SESSION['plugin_name'])->actiontypes();
		if(empty($_SESSION['actiontypes']) && $_SESSION['plugin_name'] !='core'){
			$types =array();
			$plugins = pdo_getall('core_plugins',array('basic'=>$_SESSION['plugin_name']),array('name','title'));
			if(!empty($plugins)){
				foreach($plugins as $p){
					$isdiy = pdo_getall('core_mobile_blocks',array('type'=>1,'plugin_id'=>$p['name']));
					$install = check_permission($p['name']);
					if(!empty($isdiy) && $install){
						if (method_exists(cfc($p['name']),'getactiontypes')){
							$actiontypes = cfc($p['name'])->getactiontypes();
								foreach($actiontypes as $u=>$t){
									$types[$p['name'].'/'.$u]=$p['title'].'-'.$t;
								}
						}
					}
				}
			}
			$_SESSION['actiontypes'] = $types;
		}
		$_SESSION['actiontypes']['diypage'] = 'DIY页面';
	}else{
		$_SESSION['actiontypes'] = array();
		$_SESSION['actiontypes']['diypage'] = 'DIY页面';
	}
}
$return['actiontypes']=$_SESSION['actiontypes'] ? $_SESSION['actiontypes'] : array();
if($_RQ['op']=='get'){
	if($_RQ['type']){
		$_SESSION['wxapptype']=intval($_RQ['type']);
	}
	$plugins[]=array('name'=>'core','is_show'=>1,'is_install'=>1,'paixu'=>1888,'title'=>'微官网DIY小程序','desc'=>'微官网/企业官网DIY小程序','icon'=>'');
	//小程序
	$params=array('type <>'=>4);
	if($_RQ['title']){
		$params['title like']='%'.trim($_RQ['title']).'%';
		$return['params']['title']=trim($_RQ['title']);
	}
	$fields=array('id','title','plugin','version','name','paixu');
	$pindex = max(1, $_RQ['page']);
	$psize = 100;
	$total='';
	$wxapp=pdo_getslice('core_wxapp',$params,array($pindex,$psize),$total,$fields,'','paixu desc, id desc');
	if($wxapp){
		foreach($wxapp as &$item){
			$item['plugin']=$item['plugin']?$item['plugin']:$item['name'];
			$item['plugin']=pdo_getcolumn('core_plugins',array('name'=>$item['plugin']),'title');
			$item['buy']=0;
			if($item['name']=='jy_weishop' && (!$item['paixu'] || $item['paixu']<10)){
				$item['paixu']='1886';
			}
			$install = check_permission($item['name']);
			if($install || $item['name']=='core'){
				$item['is_install'] = 1;
				$item['is_show'] = 1;
			}else{
				$item['is_install'] = 0;
				$item['is_show'] = 0;
				if($_SESSION['isfounder']){
					$item['is_show'] = 1;
				}
			}
		}
		$plugins=array_merge($plugins,$wxapp);
	}
	paixu($plugins,'paixu','desc');
	$totalpage=ceil($total/$psize);
	$totalpage=intval($totalpage);
	$return['totalpage'] =$totalpage;
	$return['params']['page'] =$pindex;
	$list = array(
			array('title'=>'全网小程序DIY（下面是支持多页DIY的小程序类型）','list'=>$plugins)
	);
	$return['item']['plugins']=$list;
	$htmls=array(
		'type' => 'look',
		'tabs'=>$tabs,
		'look' => array(
			array('type'=>'tip','title'=>'
				【使用前提】：要先注册申请各小程序。1、微信小程序申请教程：<a href="javascript:;" ng-click="modal_json(\'core/wxapp.authlist/help/\')" class="btn btn-primary" style="padding:2px 6px;font-size:12px;">点击前往</a>；2、新手必读教程：<a href="javascript:;" ng-click="modal_json(\'core/wxapp.authlist/newhelp/\')" class="btn btn-primary" style="padding:2px 6px;font-size:12px;">点击前往</a>；3、DIY小程序新手必读：<a href="javascript:;" ng-click="modal_json(\'core/wxapp.authlist/diyhelp/\')" class="btn btn-primary" style="padding:2px 6px;font-size:12px;">点击前往</a></br>
				这里是<em>六合一小程序</em>（微信/头条/抖音/支付宝/QQ轻应用/百度）；</br>
				<em>【重新定义六合一】：</em></br>
				（符合下面几点的，就算合一，目前大部分市场主流程序<em>数据都不是统一</em>的；本程序基于底层程序的<em>全网合一</em>优势，很容易实现合一）</br>
				1、小程序相关信息只需设置一次；</br>
				2、小程序下面的应用所有数据全部统一共用（例如：商城的商品，会员，订单等所有数据<em>共用</em>）：</br>
				3、在不同的小程序环境下，页面风格，页面数据都是一模一样的。</br>
				设计一套小程序，智能生成六种小程序版本，设计好后;</br>
				全新小程序机制，<em>全网端</em>（六种小程序+APP+手机+微信）之间会员统一，可以<em>无缝跳转</em></br>
				只需点击<em>上传小程序</em>，根据不同的小程序，选择不同的<em>上传模式</em>即可！</br>
				<red>【注意】：要想把小程序的粉丝跟H5公众号的粉丝打通，请移步：站点设置--》全网粉丝互通（只有开通了微信第三方开发平台，并且小程序关联了公众号，粉丝才能同步，不然微信那边没法确定，是不是同一粉丝）</red>
				<red>《消息推送对接》里面有小程序验证token的地址接口！</red></br>[<red>签名错误？openid不匹配？</red>]1、排查，小程序的微信支付商户号，微信支付密钥是否正确；2、微信小程序appid,微信小程序appsecret是否正确（特别是密钥，很容易重置过了，切不可知！）；3、小程序官方后台，白名单IP是否添加！
				</br>【常见问题】：<a href="javascript:;" ng-click="modal_json(\'core/wxapp.plugin/help/\')" class="btn btn-primary" style="padding:2px 6px;font-size:12px;">小程序使用教程</a>
				</br>【<red>底部菜单变来变去</red>】？如果是DIY小程序就可能出现这个问题，为满足千人千面的场景体机制，很多插件的底部菜单是跟随场景体的。而对于DIY小程序，绑定应用插件就是指定场景体，绑定的那个插件，底部菜单就是这个插件的（<red>除非开启全局菜单：全局设置--底部菜单--全局底部菜单?--开启</red>）。但是，只有DIY页面的底部菜单是自己的。
				</br>【<red>链接的DIY页面空白，只显示{datas}</red>】？出现这种情况，说明这个页面并不是本小程序的子页面。因为只有属于本小程序的子页面，才会生成原生态的DIY小程序页面，如果不是本小程序子页面的，将不会生成代码页面文件，固只显示{datas}！
				'
			),
			array('type'=>'plugins','pluginname'=>'core','action'=>'wxapp.list','op'=>'list','name'=>'plugins'),
		)
	);
	$return['htmls']=$htmls;
	exi($return);
}
if($_RQ['op']=='list'){
	//小程序列表
	//把所有单页小程序改成多页
	pdo_update('core_account_wxapp',array('type'=>8,'plugin_name'=>'core'),array('uniacid'=>$_SESSION['uniacid'],'type'=>1));
	$params=array('uniacid'=>$_SESSION['uniacid']);//读取多页小程序
	if($_RQ['title']){
		$params['title like']='%'.trim($_RQ['title']).'%';
		$return['params']['title']=trim($_RQ['title']);
	}
	$_SESSION['wxapptype']=8;
	if(!empty($_RQ['plugin_name'])){
		$params['plugin_name']=trim($_RQ['plugin_name']);
		$return['params']['plugin_name']=$_RQ['plugin_name'];
	}elseif(!empty($_SESSION['plugin_name'])){
		$params['plugin_name']=trim($_SESSION['plugin_name']);
		$return['params']['plugin_name']=$_SESSION['plugin_name'];
	}
	$params['type']=$_SESSION['wxapptype'];
	$return['params']['type']=$_SESSION['wxapptype'];
	$fields=array('id','title','type','version','plugin_name','isdiyindex','uptime');
	$pindex = max(1, intval($_RQ['page']));
	$psize = 15;
	$total='';
	$list=pdo_getslice('core_account_wxapp',$params,array($pindex,$psize),$total,$fields,'','id desc');
	if($list){
		foreach($list as &$row){
			$lasttime=pdo_getcolumn('core_wxapp',array('name'=>$row['plugin_name']),'lasttime');
			if($lasttime>$row['uptime']){
				$row['shownew']=1;
			}
			$row['fans']=array('action'=>'wxapp.fans','op'=>'list','query'=>'wxapp_id='.$row['id'],'title'=>'粉丝管理');
			$row['wxappurl']=custom_url('core/home.scheme//type=wxapp&id='.$row['id'],true);
		}
	}
	$return['statuss']=$statuss;
	$return['list']=$list?$list:array();
	$totalpage=ceil($total/$psize);
	$totalpage=intval($totalpage);
	$return['totalpage'] =$totalpage;
	$return['params']['page'] =$pindex;
	$htmls=array(
		'type'=>'list',
		'tabs'=>$tabs,
		'list'=>array('psize'=>$psize,'total'=>$total,'tip'=>'六合一小程序：一次设计制作小程序，六种小程序同步生成！另外小程序模板跟手机微官网模板也是通用的，会同时创建同时更新！【注意】：如果“上传小程序”按钮上面有显示“new”，就表示有新版本，可以重新上传！<red>《消息推送对接》里面有小程序验证token的地址接口！</red></br><red>【注意】：要想把小程序的粉丝跟H5公众号的粉丝打通，请移步：站点设置--》全网粉丝互通（只有开通了微信第三方开发平台，并且小程序关联了公众号，粉丝才能同步，不然微信那边没法确定，是不是同一粉丝）</red></br><red>《消息推送对接》里面有小程序验证token的地址接口！</red></br>[<red>签名错误？openid不匹配？</red>]1、排查，小程序的微信支付商户号，微信支付密钥是否正确；2、微信小程序appid,微信小程序appsecret是否正确（特别是密钥，很容易重置过了，切不可知！）；3、小程序官方后台，白名单IP是否添加！
		</br>【<red>底部菜单变来变去</red>】？如果是DIY小程序就可能出现这个问题，为满足千人千面的场景体机制，很多插件的底部菜单是跟随场景体的。而对于DIY小程序，绑定应用插件就是指定场景体，绑定的那个插件，底部菜单就是这个插件的（<red>除非开启全局菜单：全局设置--底部菜单--全局底部菜单?--开启</red>）。但是，只有DIY页面的底部菜单是自己的。
		</br>【<red>链接的DIY页面空白，只显示{datas}</red>】？出现这种情况，说明这个页面并不是本小程序的子页面。因为只有属于本小程序的子页面，才会生成原生态的DIY小程序页面，如果不是本小程序子页面的，将不会生成代码页面文件，固只显示{datas}！
		</br>【<red>小程序网址是什么</red>】？小程序网址可以适用于从短信、邮件、微信外网页等场景打开小程序。
		','data'=>'list','list'=>array(
			array('type'=>'string','title'=>'小程序id','name'=>'id'),
			array('type'=>'string','title'=>'小程序名称','name'=>'title'),
			array('name'=>'plugin_name','title'=>'所属插件','type'=>'select','options'=>'plugins'),
			//array('type'=>'radio','title'=>'小程序类型','name'=>'type','options'=>'types'),
			//array('type'=>'string','title'=>'访问量/占比','name'=>'fangwen'),
			array('type'=>'href','title'=>'粉丝管理','name'=>'fans'),
			array('type'=>'modal','title'=>'支付参数设置','op'=>'pay'),
			array('type'=>'href','title'=>'菜单设计','op'=>'menu'),
			array('type'=>'modal','title'=>'消息推送对接','op'=>'wxappapi'),
			array('type'=>'copy','title'=>'小程序网址','name'=>'wxappurl'),
			array('type'=>'switch','name'=>'isdiyindex','title'=>'是否应用DIY首页','set'=>'diyindex_set'),
			array('type'=>'href','title'=>'下载二维码','op'=>'ewm'),
			array('type'=>'href','title'=>'版本列表','op'=>'version_list','query'=>'type=wxapp','show'=>array('type',array(1,8))),
			array('action'=>'/wxapp.app_web_tpls/','title'=>'DIY布局','type'=>'href'),
			array('op'=>'edit','title'=>'全局设置','type'=>'href'),
		),'action'=>array(
			array('type'=>'post','op'=>'update','title'=>'更新','show'=>array('update',1)),
			array('type'=>'modal','op'=>'mobile','title'=>'手机网站','show'=>array('type',array(1,8))),
			//array('type'=>'href','op'=>'up','title'=>'上传代码','show'=>array('status'=>0,'type'=>2)),
			array('type'=>'href','op'=>'up_app','title'=>'上传小程序','shownew'=>1),
			array('type'=>'post','op'=>'sh','title'=>'提交审核','show'=>array('status',1)),
			array('type'=>'post','op'=>'check','title'=>'查询审核结果','show'=>array('status',2)),
			array('type'=>'post','op'=>'release','title'=>'发布','show'=>array('status',3)),
			array('type'=>'href','op'=>'template','title'=>'保存到我的模版','show'=>array('type',1)),
			array('type'=>'href','op'=>'data','title'=>'跳转到应用','show'=>array('type',2)),
		)),
		'search'=>array(
			array('name'=>'title','width'=>15,'type'=>'string','title'=>'小程序名称'),
			array('type'=>'select','width'=>13,'title'=>'所属插件','name'=>'plugin_name','options'=>'apps','option_value'=>'name'),
		)
	);
	$return['apps']=pdo_getall('core_wxapp',array('type <>'=>4),array('name','title'));
	$return['plugins']=pdo_getall('core_plugins','',array('name','title'),'name');
	$return['plugins']['core']=array('name'=>'core','title'=>'微官网');
	$return['htmls']=$htmls;
	set_html('header','common/header');
	set_html('title','小程序');
	exi($return);
}
if($_RQ['op']=='dabaolist'){
	//打包小程序列表
	$params=array('uniacid'=>$_SESSION['uniacid']);
	if($_RQ['title']){
		$params['title like']='%'.trim($_RQ['title']).'%';
		$return['params']['title']=trim($_RQ['title']);
	}
	$_SESSION['wxapptype']=7;
	$tabs=array(
		array('op'=>'dabaolist','title'=>'打包小程序列表'),
		array('op'=>'edit','title'=>'创建打包小程序'),
		array('op'=>'renzheng','title'=>'域名认证文件上传'),
	);	
	$params['type']=$_SESSION['wxapptype'];
	$return['params']['type']=$_SESSION['wxapptype'];
	$fields=array('id','title','type','version','plugin_name','isdiyindex');
	$pindex = max(1, intval($_RQ['page']));
	$psize = 15;
	$total='';
	$list=pdo_getslice('core_account_wxapp',$params,array($pindex,$psize),$total,$fields,'','id desc');
	if($list){
		foreach($list as &$row){
			$row['fans']=array('action'=>'wxapp.fans','op'=>'list','query'=>'wxapp_id='.$row['id'],'title'=>'粉丝管理');
			$row['wxappurl']=custom_url('core/home.scheme//type=wxapp&id='.$row['id'],true);
		}
	}
	$return['statuss']=$statuss;
	$return['list']=$list?$list:array();
	$totalpage=ceil($total/$psize);
	$totalpage=intval($totalpage);
	$return['totalpage'] =$totalpage;
	$return['params']['page'] =$pindex;
	$htmls=array(
		'type'=>'list',
		'tabs'=>$tabs,
		'list'=>array('psize'=>$psize,'total'=>$total,'tip'=>'目前打包小程序，已完美支持微信支付，页面前后返回等；<red>《消息推送对接》里面有小程序验证token的地址接口！</red></br>[<red>签名错误？openid不匹配？</red>]1、排查，小程序的微信支付商户号，微信支付密钥是否正确；2、微信小程序appid,微信小程序appsecret是否正确（特别是密钥，很容易重置过了，切不可知！）；3、小程序官方后台，白名单IP是否添加！
		</br>【<red>小程序网址是什么</red>】？小程序网址可以适用于从短信、邮件、微信外网页等场景打开小程序。
		</br>【<red>小程序支付问题呢</red>】？如果是此处的打包小程序（又名H5小程序），在非微信环境下（比如支付宝，头条等），需要开通微信H5支付，才能用微信支付。但是如果是应用小程序/DIY小程序类的支付宝小程序，可以直接使用支付宝支付。
		','data'=>'list','list'=>array(
			array('type'=>'string','title'=>'小程序id','name'=>'id'),
			array('type'=>'string','title'=>'小程序名称','name'=>'title'),
			array('type'=>'href','title'=>'粉丝管理','name'=>'fans'),
			array('type'=>'modal','title'=>'支付参数设置','op'=>'pay'),
			array('type'=>'modal','title'=>'消息推送对接','op'=>'wxappapi'),
			array('type'=>'copy','title'=>'小程序网址','name'=>'wxappurl'),
			array('type'=>'href','title'=>'下载二维码','op'=>'ewm'),
			array('type'=>'href','title'=>'版本列表','op'=>'version_list','query'=>'type=wxapp'),
			array('op'=>'edit','title'=>'全局设置','type'=>'href'),
		),'action'=>array(
			array('type'=>'href','op'=>'up_app','title'=>'上传小程序'),
		)),
		'search_one'=>array('name'=>'title','add_op'=>'edit'),
	);

	$return['htmls']=$htmls;
	set_html('header','common/header');
	set_html('title','打包小程序');
	exi($return);
}
if($_RQ['op']=='ewm'){
	//exi('开发中！','error');
	if($_RQ['postdata']){
		$post=get_postdata();
		$id=intval($post['id']);
		$wxapp=pdo_get('core_account_wxapp',array('id'=>$id));
		if(!$wxapp){
			exi('指定小程序不存在！','error');
		}
		if(!$wxapp['appid'] || !$wxapp['appsecret']){
			exi('公众号参数缺失，无法生成小程序二维码！','error');
		}
		$action=trim($post['action']);
		if(!$action){
			exi('请输入页面action','error');
		}
		$action_array=links($action);
		$action_array['action']=str_replace('.','/',$action_array['action']);
		$attachment=pdo_getcolumn('core_account_wxapp_ewm',array('wxapp_id'=>$id,'action'=>$action),'attachment');
		$createtime=pdo_getcolumn('core_account_wxapp_ewm',array('wxapp_id'=>$id,'action'=>$action),'createtime');
		if(!$attachment || !$createtime){
			//if($wxapp['type']==7){
				$url=urlencode($action);
				$page="/pages/index/index?url=".$url;
			//}else{
			//	$page="/{$action_array['plugin']}/{$action_array['action']}/index";
			//	if($action_array['query']){
			//		$page.="?".$action_array['query'];
			//	}
			//}
			$data=model('core/wxapp')->appcode($page,$wxapp['appid'],$wxapp['appsecret']);
			$attachmentnew=model('core/files')->source_save($data,'data','jpg');		
			$insert=array(
				'uniacid'=>$_SESSION['uniacid'],
				'wxapp_id'=>$id,
				'action'=>$action,
				'attachment'=>$attachmentnew,
				'createtime'=>time(),
			);
			pdo_insert('core_account_wxapp_ewm',$insert);
		}
		$ewm_url=tomedia($attachment);
		exi('','','',$ewm_url);
	}
	$id=intval($_RQ['id']);
	$item=array(
		'id'=>$id,
	);
	$return['item']=$item;
	$return['htmls']=array(
		'type'=>'edit',
		'edit'=>array(
			array('type'=>'link','name'=>'action','from'=>'action','title'=>'页面action','help'=>'根据url生成不同的小程序码，填写标准完整的页面action；如果生成二维码提示小程序文件不存在，请重新发布小程序！'),
		),
	);
	exi($return);
}

//设置小程序对接参数
if($_RQ['op']=='wxappapi'){
	$id=intval($_RQ['id']);
		if(!$id){
			exi('请先选择要设置的小程序！','error');
		}
		$item=pdo_get('core_account_wxapp',array('id'=>$id,'uniacid'=>$_SESSION['uniacid']),array('id','title'));
		$account=pdo_get('core_accounts',array('uniacid'=>$_SESSION['uniacid']));
		$item['url']=$_AR['siteroot'].'api/wxapi.php?id='.$_SESSION['uniacid'].'&wxappid='.$id;
		$item['token']=$account['token'];
		$item['aeskey']=$account['aeskey'];
		$return['item']=$item;
		$return['htmls']=array(
			'type'=>'look',
			'desc'=>'对接参数',
			'look'=>array(
				array('type'=>'tip','title'=>'[温馨提示]：移步小程序后台--》开发--》开发设置--》消息推送--》把下面的内容，一个个对应复制粘贴，然后验证绑定！<red>注意：小程序卡券，会员卡等领取相关动作，会用到该消息推送</red>'),
				array('type'=>'copy','title'=>'服务器地址','name'=>'url', 'help'=>'登录小程序账号后台：设置-开发设置-消息推送-启用-扫码-消息推送配置-提交'),
				array('type'=>'copy','title'=>'令牌（Token）','name'=>'token','help'=>'','must'=>true),
				array('type'=>'copy','title'=>'消息加解密密钥(EncodingAESKey)','name'=>'aeskey','help'=>'','must'=>true),
			),
		);
		exi($return);
}
if($_RQ['op']=='pay'){
	//设置小程序支付参数
	if($_RQ['postdata']){
		$post=get_postdata();
		$id=intval($post['id']);
		if(!$id){
			exi('请先选择要设置的小程序！','error');
		}
		$data=array(
			'mchid'=>$post['mchid'],
			'paykey'=>$post['paykey'],
			'tt_paymchid'=>$post['tt_paymchid'],
			'tt_payappid'=>$post['tt_payappid'],
			'tt_paysecret'=>$post['tt_paysecret'],
		);
		pdo_update('core_account_wxapp',$data,array('id'=>$id,'uniacid'=>$_SESSION['uniacid']));
		exi('设置成功！');
	}else{
		$id=intval($_RQ['id']);
		if(!$id){
			exi('请先选择要设置的小程序！','error','list');
		}
		$item=pdo_get('core_account_wxapp',array('id'=>$id,'uniacid'=>$_SESSION['uniacid']),array('id','title','mchid','paykey','tt_paymchid','tt_payappid','tt_paysecret'));
		$return['item']=$item;
		$return['htmls']=array(
			'type'=>'edit',
			'desc'=>'设置小程序支付参数',
			'edit'=>array(
				array('type'=>'string','name'=>'title','title'=>'小程序名称','read'=>true),
				array('type'=>'string','name'=>'mchid','title'=>'微信支付商户号(mchid)','help'=>'微信支付商户号，从微信商户平台获取（开通微信支付的通知邮件中也有）'),
				array('type'=>'string','name'=>'paykey','title'=>'微信支付密钥','help'=>'设置微信支付密钥，需要和微信商户平台的api密钥保持一致'),
				array('type'=>'string','name'=>'tt_paymchid','title'=>'头条/抖音支付商户号','help'=>'支付商户号：开通教程：https://microapp.bytedance.com/dev/cn/mini-app/develop/functional-plug-in/mini-app-pay-plugin-reference/application-for-payment'),
				array('type'=>'string','name'=>'tt_payappid','title'=>'头条/抖音支付APPID','help'=>'支付app_id'),
				array('type'=>'string','name'=>'tt_paysecret','title'=>'头条/抖音支付密钥','help'=>'支付密钥'),
			),
		);
		exi($return);
	}
}
if($_RQ['op']=='menu'){
	//设计小程序菜单
	if($_RQ['postdata']){
		$post=get_postdata();
		$id=intval($post['id']);
		if(!$id){
			exi('请先选择小程序~！','error');
		}
		$setting=ijson_encode($post['setting']);
		pdo_update('core_account_wxapp',array('setting'=>$setting),array('id'=>$id));
		exi('设置成功~！','','list');
	}
	$id=intval($_RQ['id']);
	if(!$id){
		exi('请先选择小程序~！','error');
	}
	$return['borderStyles'] =array('0'=>'white','1'=>'black');
	$return['positions'] =array('0'=>'bottom','1'=>'top');
	$return['item']=array();
	$return['item']=pdo_get('core_account_wxapp',array('id'=>$id,'uniacid'=>$_SESSION['uniacid']));
	$setting =$return['item']['setting'] ? json_decode($return['item']['setting'],true):array('isfooter'=>0);
	$setting['footer']=$setting['footer']?$setting['footer']:array('backgroundColor'=>'#fff');
	$setting['footer']['menus']=$setting['footer']['menus']?$setting['footer']['menus']:array(array('title'=>'首页'));
	$return['item']['setting'] = $setting;
	$return['htmls']=array(
		'type'=>'edit',
		'desc'=>'小程序tab设置',
		'tabs'=>array(
			array('op'=>$_SESSION['wxapptype']==8?'list':'dabaolist','title'=>'返回小程序列表'),
		),
		'edit'=>array(
							array('type'=>'color','name'=>'setting.footer.color','title'=>'文字默认颜色','help'=>'默认黑色'),
							array('type'=>'color','name'=>'setting.footer.selectedColor','title'=>'选中时的颜色','help'=>'默认绿色'),
							array('type'=>'color','name'=>'setting.footer.backgroundColor','title'=>'导航的背景色','help'=>'默认白色'),
							array('type'=>'radio','name'=>'setting.footer.borderStyle','title'=>'边框的颜色','options'=>'borderStyles','option_value'=>'dtitle','help'=>'tabbar上边框的颜色， 仅支持 black / white'),
							array('type'=>'radio','name'=>'setting.footer.position','title'=>'TabBar的位置','options'=>'positions','option_value'=>'dtitle','help'=>'选择top的话，底部就不显示图片了，tabBar的位置，仅支持 bottom / top'),
							//array('type'=>'switch','name'=>'istabbar','title'=>'是开启小程序导航','help'=>'默认使用微官网自定义导航！'),
							array(
								'type'=>'array',
								'name'=>'menus',
								'tovalue'=>'pagedata.item.setting.footer',
								//'show'=>array('istabbar'=>1),
								'add_tip'=>'添加一个底部导航',
									'list'=>array(
												array('type'=>'string','name'=>'title','title'=>'菜单名称'),
												array('type'=>'icon','name'=>'icon','title'=>'默认图标'),
												array('type'=>'string','name'=>'url','title'=>'菜单链接'),
									),
									'details'=>array(
												array('type'=>'string','name'=>'title','title'=>'菜单名称'),
												array('type'=>'icon','name'=>'icon','title'=>'默认图标'),
												array('type'=>'choose','op'=>'page_choose','name'=>'url','title'=>'菜单链接'),
												
									)
							),
		),
	);
	exi($return);
}

if($_RQ['op']=='edit'){
	//设置小程序基本信息
	if($_RQ['postdata']){
		$post=get_postdata();
		$id=intval($post['id']);
		$shownums=array(
			'news_num'=>intval($post['news_num']),
			'stores_num'=>intval($post['stores_num']),
			'products_num'=>intval($post['products_num']),
			'anlis_num'=>intval($post['anlis_num']),
		);
		$data=array(
			'title'=>trim($post['title']),
			'desc'=>trim($post['desc']),
			'logo'=>trim($post['logo']),
			'is_wz'=>intval($post['is_wz']),
			'appid'=>trim($post['appid']),
			'appsecret'=>trim($post['appsecret']),
			'tt_appid'=>trim($post['tt_appid']),
			'tt_secret'=>trim($post['tt_secret']),
			'ali_appid'=>trim($post['ali_appid']),
			'alipay_private_key'=>trim($post['alipay_private_key']),
			'alipay_public_key'=>trim($post['alipay_public_key']),
			'baidu_appid'=>trim($post['baidu_appid']),
			'baidu_secret'=>trim($post['baidu_secret']),
			'qq_appid'=>trim($post['qq_appid']),
			'qq_secret'=>trim($post['qq_secret']),
			'web_id'=>$post['web_id'],
			'oldid'=>$post['oldid'],
			'url'=>trim($post['url']),
			'shownums'=>ijson_encode($shownums),
			'setting'=>ijson_encode($post['setting']),
			'istabbar'=>intval($post['istabbar']),
			'sharetitle'=>trim($post['sharetitle']),
			'sharedesc'=>trim($post['sharedesc']),
			'shareimg'=>trim($post['shareimg']),
			'syscolor'=>$post['setting']['window']['navigationBarBackgroundColor'],
		);
		if(!$id){
			$insert['uniacid']=$_SESSION['uniacid'];
			$insert['title']=$data['title'];
			$insert['syscolor']=$data['syscolor'];
			$insert['createtime']=time();
			pdo_insert('core_mobile_web',$insert);
			$webid=pdo_insertid();
			$data['uniacid']=$_SESSION['uniacid'];
			$data['type']=$_SESSION['wxapptype'];
			$data['createtime']=time();
			$data['web_id']=$webid;
			if($data['type']==8){
				$data['plugin_name']=$post['plugin_name']?:$_SESSION['plugin_name'];
				$data['plugin_name']=$_SESSION['plugin_name']?:'core';
			}
			pdo_insert('core_account_wxapp',$data);
			$id=pdo_insertid();
			pdo_update('core_mobile_web',array('wxapp_id'=>$id),array('uniacid'=>$_SESSION['uniacid'],'id'=>$webid));
			if($data['type']==2){
				exi('添加成功！请选择小程序应用！','',array('op'=>'list','action'=>'wxapp.plugin','query'=>'id='.$id));
			}elseif($data['type']==7){
				exi('添加成功！','','dabaolist');
			}else{
				exi('添加成功！','','list');
			}
		}else{
			pdo_update('core_account_wxapp',$data,array('id'=>$id,'uniacid'=>$_SESSION['uniacid']));
			if($_SESSION['wxapptype']==7){
				exi('设置成功！','','dabaolist');
			}else{
				exi('设置成功！','','list');
			}
		}
		
	}else{
		$id=intval($_RQ['id']);
		//来自微官网
		if($_RQ['fromweb'] && $id){
			$appid=pdo_getcolumn('core_account_wxapp',array('web_id'=>$id,'uniacid'=>$_SESSION['uniacid']),'id');
			if(!$appid){
				$insert=pdo_get('core_mobile_web',array('id'=>$id,'uniacid'=>$_SESSION['uniacid']),array('items','setting','title'));
				$insert['uniacid']=$_SESSION['uniacid'];
				$insert['type']=1;
				$insert['web_id']=$id;
				$insert['createtime']=time();
				pdo_insert('core_account_wxapp',$insert);
				$appid=pdo_insertid();
				pdo_update('core_mobile_web',array('wxapp_id'=>$appid),array('id'=>$id,'uniacid'=>$_SESSION['uniacid']));
			}
			$id=$appid;
		}
		if(!$id){
			model('core/web')->check_num('wxapp');
			$return['item']=array();
			$return['item']['type']=$_SESSION['wxapptype'];
			$return['item']['plugin_name']=$_SESSION['plugin_name']?:'core';
		}else{
			$return['item']=pdo_get('core_account_wxapp',array('id'=>$id,'uniacid'=>$_SESSION['uniacid']));
		}
		
		$return['item']['shownums']=json_decode($return['item']['shownums'],true);
		$setting =$return['item']['setting'] ? json_decode($return['item']['setting'],true):array('isfooter'=>0);
		$setting['window']=$setting['window']?$setting['window']:array('navigationStyle'=>'');
		$setting['footer']=$setting['footer']?$setting['footer']:array('background'=>'#fff');
		$setting['footer']['menus']=$setting['footer']['menus']?$setting['footer']['menus']:array();
		$setting['window']['navigationBarTitleText']=$setting['window']['navigationBarTitleText']?$setting['window']['navigationBarTitleText']:$return['item']['title'];
		$setting['window']['navigationBarBackgroundColor']=$setting['window']['navigationBarBackgroundColor']?$setting['window']['navigationBarBackgroundColor']:'#f10215';
		$setting['window']['navigationBarTextStyle']=$setting['window']['navigationBarTextStyle']?$setting['window']['navigationBarTextStyle']:'white';
		if($_SESSION['wxapptype']==8 && $_SESSION['plugin_name']=='jy_weishop'){
			$setting['window']['navigationStyle']='custom';
			$locknavigationStyle=true;
		}else{
			$locknavigationStyle=false;
		}
		$return['item']['setting'] = $setting;
		$return['item']['news_num']=$return['item']['shownums']['news_num'];
		$return['item']['stores_num']=$return['item']['shownums']['stores_num'];
		$return['item']['products_num']=$return['item']['shownums']['products_num'];
		$return['item']['anlis_num']=$return['item']['shownums']['anlis_num'];
		$return['navigationBarTextStyles'] =array('white'=>'white','black'=>'black');
		$return['backgroundTextStyles'] =array('dark'=>'dark','light'=>'light');
		$return['borderStyles'] =array('white'=>'white','black'=>'black');
		$return['positions'] =array('bottom'=>'bottom','top'=>'top');
		$return['navigationStyles'] =array('default'=>'开启','custom'=>'关闭');
		$return['iconstyle'] =array('0'=>'图片图标','1'=>'字体图标');
		$htmls=array(
			'type'=>'edit',
			'desc'=>'小程序',
			'tabs'=>array(
				array('op'=>$_SESSION['wxapptype']==8?'list':'dabaolist','title'=>'返回小程序列表'),
			),
			'edit_tab'=>true,
			'edits'=>array(
				array(
					'title'=>'基本信息','list'=>array(
						array('type'=>'string','name'=>'title','title'=>'小程序名称','help'=>'小程序标题','must'=>true),
						array('type'=>'image','name'=>'logo','title'=>'小程序LOGO','help'=>'小程序LOGO'),
						array('type'=>'color_pool','name'=>'setting.window.navigationBarBackgroundColor','title'=>'选择配色方案','help'=>''),
						array('type'=>'colorpicker','name'=>'setting.window.navigationBarBackgroundColor','title'=>'小程序头低主色','help'=>''),
						array('type'=>'radio','name'=>'setting.window.navigationBarTextStyle','title'=>'导航栏标题颜色','options'=>'navigationBarTextStyles','option_value'=>'dtitle'),
						array('type'=>'phone_tpl','name'=>'setting.window.navigationBarBackgroundColor','demo'=>1,'title'=>'演示效果'),
						array('type'=>'switch','name'=>'is_wz','title'=>'第三方小程序？','help'=>'如果是第三方小程序：1、必须先设置好第三方域名；1、从第三方登陆！'),
						array('type'=>'link','name'=>'url','title'=>'要打包的页面链接','help'=>'如果是打包功能插件，请选择功能插件的入口地址','show'=>array('type',7)),
						array('type'=>'select','options'=>'apps','option_value'=>'name','title'=>'所属小程序类型','name'=>'plugin_name','help'=>'选择要关联的小程序应用','show'=>array('type',8)),
					),
				),
				array(
					'title'=>'六合一设置','list'=>array(
						array('type'=>'tip','title'=>'微信小程序参数设置；（要先去微信官网申请小程序，申请教程：<a href="javascript:;" ng-click="modal_json(\'core/wxapp.authlist/help/\')" class="btn btn-primary" style="padding:2px 6px;font-size:12px;">点击前往</a>）'),
						array('type'=>'string','title'=>'微信appid','name'=>'appid','help'=>'填写微信小程序appid' ),
						array('type'=>'string','title'=>'微信appsecret','name'=>'appsecret','help'=>'填写微信小程序 appsecret' ),
						array('type'=>'string','title'=>'原始ID','name'=>'oldid','help'=>'填写微信小程序原始ID'),
						array('type'=>'tip','title'=>'头条/抖音小程序参数设置'),
						array('type'=>'string','title'=>'头条/抖音appid','name'=>'tt_appid','help'=>'填写小程序appid' ),
						array('type'=>'string','title'=>'头条/抖音appsecret','name'=>'tt_secret','help'=>'填写小程序 appsecret' ),
						array('type'=>'tip','title'=>'支付宝小程序参数设置'),
						array('type'=>'string','title'=>'支付宝appid','name'=>'ali_appid','help'=>'填写小程序appid' ),
						array('type'=>'text','title'=>'支付宝应用私钥','name'=>'alipay_private_key','help'=>'支付宝开放平台创建应用成功后，进入应用设置(路径：开发中心—小程序应用—选择小程序-设置–开发设置)应用加签方式(<red>选择第二个“公钥”</red>)，设置应用公钥。使用密钥生成器(工具安装：https://opendocs.alipay.com/open/291/105971#Krqvg，选择：RSA2，PKCS1(非JAVA适用))生成一对密钥，将私钥填至此处，将公钥填于支付宝开放平台！'),
						array('type'=>'text','title'=>'支付宝公钥','name'=>'alipay_public_key','help'=>'成功设置应用私钥后，可以在同一个地方查看支付宝公钥，复制到此处！'),
						array('type'=>'tip','title'=>'百度小程序参数设置'),
						array('type'=>'string','title'=>'百度appid','name'=>'baidu_appid','help'=>'填写小程序appid' ),
						array('type'=>'string','title'=>'百度appsecret','name'=>'baidu_secret','help'=>'填写小程序 appsecret' ),
						array('type'=>'tip','title'=>'QQ轻应用参数设置'),
						array('type'=>'string','title'=>'QQ轻应用appid','name'=>'qq_appid','help'=>'填写小程序appid；前往QQ互联申请：https://connect.qq.com/'),
						array('type'=>'string','title'=>'QQ轻应用appkey','name'=>'qq_secret','help'=>'填写小程序 appkey；前往QQ互联申请：https://connect.qq.com/'),
					),
				),
				array(
					'title'=>'顶部导航设置','list'=>array(
						array('type'=>'radio','name'=>'setting.window.navigationStyle','read'=>'false','title'=>'是否关闭顶部导航','options'=>'navigationStyles','option_value'=>'dtitle','help'=>'有些应用小程序，会被默认，<em>不能修改</em>。导航栏样式，自定义导航栏，只保留右上角胶囊按钮(‘关闭’情况下支持顶部图片背景)'),
						array('type'=>'image','name'=>'setting.window.navtop_bgimg','title'=>'导航栏背景图片','help'=>'导航栏为‘关闭’，才生效！尺寸：750*160；小程序顶部背景图片'),
						array('type'=>'color','name'=>'setting.window.navigationBarBackgroundColor','title'=>'导航栏背景色','help'=>'小程序顶部背景色'),
						array('type'=>'radio','name'=>'setting.window.navigationBarTextStyle','title'=>'导航栏标题颜色','options'=>'navigationBarTextStyles','option_value'=>'dtitle'),
						array('type'=>'string','name'=>'setting.window.navigationBarTitleText','title'=>'导航栏标题','help'=>'导航栏标题文字内容！留空这使用小程序名称'),
					),
				),
				array(
					'title'=>'底部导航设置','list'=>array(
						array('type'=>'radio','name'=>'isfooter','title'=>'是否开启导航','help'=>'如果是第三方小程序：1、必须先设置好第三方域名；1、从第三方登陆！'),
						array('type'=>'color','name'=>'setting.footer.color','title'=>'文字默认颜色','help'=>'默认黑色'),
						array('type'=>'color','name'=>'setting.footer.selectedColor','title'=>'选中时的颜色','help'=>'默认绿色'),
						array('type'=>'color','name'=>'setting.footer.backgroundColor','title'=>'导航的背景色','help'=>'默认白色'),
						array('type'=>'radio','name'=>'setting.footer.borderStyle','title'=>'边框的颜色','options'=>'borderStyles','option_value'=>'dtitle','help'=>'tabbar上边框的颜色， 仅支持 black / white'),
						array('type'=>'radio','name'=>'setting.footer.position','title'=>'TabBar的位置','options'=>'positions','option_value'=>'dtitle','help'=>'选择top的话，底部就不显示图片了，tabBar的位置，仅支持 bottom / top'),
						//array('type'=>'switch','name'=>'istabbar','title'=>'是开启小程序导航','help'=>'默认使用微官网自定义导航！'),
						//array('type'=>'radio','name'=>'setting.top.iconstyle','title'=>'图标？','options'=>'iconstyles'),
						array('type'=>'switch','name'=>'setting.footer.islegao_menu','title'=>'全局底部菜单?','help'=>'开启后，本小程序所有页面的底部菜单，都以下面菜单为准！'),
						array('type'=>'tip','title'=>'[<red>底部菜单变化？</red>]：为了底部菜单的统一性，下面的菜单是跟DIY设计的时候的底部菜单是统一的，修改任何地方，都会同步变化！'),
						array(
								'type'=>'array',
								'name'=>'menus',
								'tovalue'=>'pagedata.item.setting.footer',
								//'show'=>array('istabbar'=>1),
								'add_tip'=>'添加一个底部导航',
									'list'=>array(
												array('type'=>'string','name'=>'title','title'=>'菜单名称'),
												array('type'=>'icon','name'=>'icon','from'=>'jinyunicon','title'=>'默认图标'),
												array('type'=>'string','name'=>'url','title'=>'菜单链接'),
									),
									'details'=>array(
												array('type'=>'string','name'=>'title','title'=>'菜单名称'),
												array('type'=>'icon','name'=>'icon','from'=>'jinyunicon','title'=>'默认图标'),
												array('type'=>'link','name'=>'url','from'=>'action','title'=>'菜单链接'),
												
									)
						),
					),
				),
				array(
					'title'=>'窗口样式设置','list'=>array(
						array('type'=>'color','name'=>'setting.window.backgroundColor','title'=>'窗口的背景色','help'=>'默认白色，大部分不用填写！'),
						array('type'=>'radio','name'=>'setting.window.backgroundTextStyle','title'=>'窗口的背景色','options'=>'backgroundTextStyles','option_value'=>'dtitle'),
						array('type'=>'color','name'=>'setting.window.backgroundColorTop','title'=>'顶部窗口的背景色','help'=>'顶部窗口的背景色，仅 iOS 支持,微信版本 6.5.16'),
						array('type'=>'color','name'=>'setting.window.backgroundColorBottom','title'=>'底部窗口的背景色','help'=>'顶部窗口的背景色，仅 iOS 支持,微信版本 6.5.16'),
					),
				),
				array(
					'title'=>'分享设置','list'=>array(
						array('type'=>'string','name'=>'sharetitle','title'=>'小程序分享标题','help'=>'小程序分享标题'),
						array('type'=>'string','name'=>'sharedesc','title'=>'小程序分享描述','help'=>'小程序首页分享描述'),
						array('type'=>'image','name'=>'shareimg','title'=>'小程序分享图片','help'=>'小程序首页分享图片自定义，留空则默认截屏分享！'),
					),
				),
				array(
					'title'=>'直播插件设置','list'=>array(
						array('type'=>'switch','name'=>'setting.live.isopen','title'=>'是否开启小程序直播','help'=>'（<red>必须前往微信小程序官方--设置--第三方设置--插件管理--开通小程序直播插件，如果本小程序没有开通小程序直播插件，贸然开启，会导致小程序无法访问！同时无法上传发布小程序新版本！</red>）'),
						array('type'=>'string','name'=>'setting.live.version','title'=>'直播插件版本号','help'=>'微信官方小程序后台--》设置--第三方设置--插件--》直播插件，获取直播插件版本号；例如：1.0.2'),
						array('type'=>'string','name'=>'setting.live.provider','title'=>'直播插件id','help'=>'微信官方小程序后台--》设置--第三方设置--插件--》直播插件，获取直播插件id;例如：wx2b03c6e691cd7370'),
					),
				),
				array(
					'title'=>'其他全局设置','list'=>array(
						array('type'=>'switch','name'=>'setting.window.enablePullDownRefresh','title'=>'是否全局开启下拉刷新'),
						array('type'=>'string','name'=>'setting.window.onReachBottomDistance','title'=>'上拉触底距离','help'=>'只能填数字，默认50，页面上拉触底事件触发时距页面底部距离，单位为px'),
					),
				),
			)
		);
		$return['htmls']=$htmls;
		$return['apps']=pdo_getall('core_wxapp',array('type <>'=>4),array('name','title'));
		$return['webs']=pdo_getall('core_mobile_web',array('uniacid'=>$_SESSION['uniacid'],'type'=>0),array('id','title'));
		exi($return);
	}
}
if($_RQ['op']=='data'){
	//小程序数据管理：如果是微官网小程序，前往设置幻灯片和导航菜单；如果是插件小程序，前往小程序关联插件管理页
	exi('功能开发中！','error');
}
if($_RQ['op']=='change'){
	//更换小程序模版：从小程序市场中重新选择小程序模版来生成小程序（适用于插件小程序）
	exi('请选择小程序！','',array('op'=>'list','action'=>'wxapp.plugin','query'=>'id='.$id));
}

if($_RQ['op']=='diyindex_set'){
	//设置是否作为首页
	$id=intval($_RQ['id']);
	if(!$id){
		exi('请先选择小程序~！','error');
	}
	$post=get_postdata();
	$isdiyindex=intval($post['isdiyindex']);
	pdo_update('core_account_wxapp',array('isdiyindex'=>$isdiyindex),array('id'=>$id,'uniacid'=>$_SESSION['uniacid']));
	exi('设置成功！','error');
}

if($_RQ['op']=='page_choose'){
	//选择链接
	if(!$_SESSION['wxapp_id']){
		exi('请先选择小程序！','error');
	}
	$params=array('uniacid'=>$_SESSION['uniacid'],'wxapp_id'=>$_SESSION['wxapp_id']);//读取多页小程序
	if($_RQ['title']){
		$params['title like']='%'.trim($_RQ['title']).'%';
		$return['params']['title']=trim($_RQ['title']);
	}
	$fields=array('id','name','title');
	$pindex = max(1, $_RQ['page']);
	$psize = 10;
	$total='';
	$list=pdo_getslice('core_account_wxapp_pages',$params,array($pindex,$psize),$total,$fields,'','id desc');
	$list?$list:array();
	foreach($list as &$item){
		$item['action']='core/diy.page_'.$item['id'].'/';
	}
	$return['list']=$list;
	$totalpage=ceil($total/$psize);
	$totalpage=intval($totalpage);
	$return['totalpage'] =$totalpage;
	$return['params']['page'] =$pindex;
	$return['htmls']=array(
		'type'=>'list',
		'tabs'=>array(
			array('op'=>'page_choose','title'=>'本小程序页面'),
			array('op'=>'syspage_choose','title'=>'小程序系统页面'),
			array('op'=>'other_choose','title'=>'小程序其他页面'),
			array('action'=>'tools.link','title'=>'系统H5页面'),
		),
		'list'=>array('data'=>'list','edit'=>false,'delall'=>false,'del_one'=>false,'list'=>array(
			array('name'=>'name','title'=>'页面类型','type'=>'radio','options'=>'actiontypes'),
			array('type'=>'string','name'=>'title','title'=>'页面名称'),
			array('name'=>'action','title'=>'页面路径','type'=>'string'),
			
		),'action'=>array(
			array('type'=>'modal_result','name'=>'action','title'=>'选取'),
		)),
		'search_one'=>array('name'=>'title','add'=>false),
	);
	exi($return);
}
if($_RQ['op']=='syspage_choose'){
	//选择链接
	if(!$_SESSION['wxapp_id']){
		exi('请先选择小程序！','error');
	}
	$list=get_wxapp_pages();
	$list=$list?$list:array();
	$return['list']=$list;
	$return['htmls']=array(
		'type'=>'list',
		'tabs'=>array(
			array('op'=>'page_choose','title'=>'本小程序页面'),
			array('op'=>'syspage_choose','title'=>'小程序系统页面'),
			array('op'=>'other_choose','title'=>'小程序其他页面'),
			array('action'=>'tools.link','title'=>'系统H5页面'),
		),
		'list'=>array('data'=>'list','edit'=>false,'delall'=>false,'del_one'=>false,'list'=>array(
			array('type'=>'string','name'=>'title','title'=>'页面名称'),
			array('type'=>'string','name'=>'url','title'=>'页面路径'),	
		),'action'=>array(
			array('type'=>'modal_result','name'=>'url','title'=>'选取'),
		)),
		'search_one'=>array('name'=>'title','add'=>false),
	);
	exi($return);
}
if($_RQ['op']=='other_choose'){
	//选择链接
	if(!$_SESSION['wxapp_id']){
		exi('请先选择小程序！','error');
	}
	$list=get_wxapp_shoppages();
	$list=$list?$list:array();
	$return['list']=$list;
	$return['htmls']=array(
		'type'=>'list',
		'tabs'=>array(
			array('op'=>'page_choose','title'=>'本小程序页面'),
			array('op'=>'syspage_choose','title'=>'小程序系统页面'),
			array('op'=>'other_choose','title'=>'小程序其他页面'),
			array('action'=>'tools.link','title'=>'系统H5页面'),
		),
		'list'=>array('data'=>'list','edit'=>false,'delall'=>false,'del_one'=>false,'list'=>array(
			array('type'=>'string','name'=>'title','title'=>'页面名称'),
			array('type'=>'string','name'=>'url','title'=>'页面路径'),	
		),'action'=>array(
			array('type'=>'modal_result','name'=>'url','title'=>'选取'),
		)),
		'search_one'=>array('name'=>'title','add'=>false),
	);
	exi($return);
}
if($_RQ['op']=='design'){
	//设计小程序：设计小程序页面，适用于diy小程序
	if($_RQ['postdata']){
		$post=get_postdata();
		$id=intval($post['id']);
		if(!$id){
			exi('请先选择小程序！','error');
		}
		if($post['items']){
			foreach($post['items'] as &$v){
				if($v['extradata']){
					unset($v['extradata']);
				}
			}
		}
		$update=array(
			'items'=>$post['items']?ijson_encode($post['items']):'',
			'setting'=>$post['setting']?ijson_encode($post['setting']):''
		);
		if($update['items'] || $update['setting']){
			//检测恶意代码
			if(strexists($update['items'],'<?') || strexists($update['setting'],'<?')){
				exi('提交内容存在恶意代码，无法提交！','error');
			}
			if($post['type']!='template'){//type==template表示设计的是模版，设计模版时无需生成具体页面			
				//获取开发者自己的组件，并上传
				$local_blocks=pdo_getall('core_mobile_blocks',array('madehtml <>'=>''),array('cloud_id','default','madehtml'),'cloud_id');
				if($local_blocks){
					foreach($local_blocks as &$row){
						$row['madehtml']=cfc('files')->source_read($row['madehtml'],true);
						$row['default']=$row['default']?json_decode($row['default'],true):array();
					}
				}
				//设计完成后，对接云端生成页面
				$post=array('items'=>base64_encode($update['items']),'setting'=>base64_encode($update['setting']),'local_blocks'=>$local_blocks);
				$html=cloud_request('diy.mobile.made',$post);
				//将获得生成的html代码存入文件
				$item=pdo_get('core_account_web_tpl',array('id'=>$id,'uniacid'=>$_SESSION['uniacid']),array('html'));
				$html=cfc('files')->source_save($html,'page','html','微站页面：'.$id,$item['html']);
				if(!$item['html']){
					$update['html']=$html;
				}
			}
		}
		
		pdo_update('core_account_web_tpl',$update,array('id'=>$id,'uniacid'=>$_SESSION['uniacid']));
		$tplinfo=pdo_get('core_account_web_tpl',array('tpl_id'=>0,'id'=>$id,'uniacid'=>$_SESSION['uniacid']),array('is_open','web_id'));
		if($tplinfo['is_open']==1 && $tplinfo['web_id']){
			pdo_update('core_mobile_web',$update,array('id'=>$tplinfo['web_id'],'uniacid'=>$_SESSION['uniacid']));
			unset($update['html']);
			pdo_update('core_account_wxapp',$update,array('web_id'=>$tplinfo['web_id'],'uniacid'=>$_SESSION['uniacid']));
		}
		exi('保存成功！','','goback');
	}else{
		$id=intval($_RQ['id']);
		$basictype=$_RQ['basictype']?intval($_RQ['basictype']) : 0 ;
		if(!$id){
			exi('请先选择要设计的小程序！','error');
		}
		if($_SESSION['os']!='windows'){
			exi('请在PC端设计微网站！','list');
		}
		$return['used_navs']=array();
		$item=pdo_get('core_account_web_tpl',array('id'=>$id,'uniacid'=>$_SESSION['uniacid']),array('id','web_id','tpl_id','items','setting','title'));
		if($item['web_id']){
				$_SESSION['mobile_web']['webid']=$item['webid'];
				if($item['tpl_id']==0){
					$_SESSION['mobile_web']['mod_id']=$id;
				}else{
					$_SESSION['mobile_web']['mod_id']=$item['tpl_id'];
				}
		}
		$item['items']=$item['items']?json_decode($item['items'],true):array();
		if($item['items']){
			foreach($item['items'] as $row){
				if(!$return['used_navs'][$row['nid']]){
					$return['used_navs'][$row['nid']]=pdo_get('core_mobile_blocks',array('cloud_id'=>$row['nid']),array('name','showhtml','edithtml'));
				}
			}
		}
		$item['setting']=$item['setting']?json_decode($item['setting'],true):array('bgimg'=>'');
		$websetting=pdo_getcolumn('core_account_wxapp',array('web_id'=>$item['web_id'],'uniacid'=>$_SESSION['uniacid']),'setting');
		$websetting=json_decode($websetting,true);
		$item['setting']['window']=$websetting['window'];
		$navs0=pdo_getall('core_mobile_blocks',array('type'=>0,'basictype'=>0,'support'=>0),array(),'','usenum desc',array('10'));
		if($navs0){
			foreach($navs0 as &$nav){
				$nav['default']=json_decode($nav['default'],true);
				
			}
		}
		$navs1=pdo_getall('core_mobile_blocks',array('type'=>0,'basictype'=>1,'support'=>0),array(),'','usenum desc',array('10'));
		if($navs1){
			foreach($navs1 as &$nav){
				$nav['default']=json_decode($nav['default'],true);
				
			}
		}

		if($_SESSION['plugin_name'] != 'core'){
			$plugins[0]=array('name'=>$_SESSION['plugin_name']);
			if (method_exists(cfc($_SESSION['plugin_name']),'getplugins')){
				$getplugins = cfc($_SESSION['plugin_name'])->getplugins();
				foreach($getplugins as $type){
					foreach($type['list'] as $tp){
						$plugins[]=array('name'=>$tp['name']);
					}
				}
			}
		}else{
			$plugins=array();
		}
		
		if($plugins){
			$plugintitles=array();
			$navs2=array();
			$i = 0;
			foreach($plugins as $k=>&$p){
				$plugintitle=pdo_getcolumn('core_plugins',array('name'=>$p['name']),'title');
				if (!$plugintitle || in_array($plugintitle,$plugintitles)){
					
				}else{
					$plugintitles[$i] = $plugintitle;
					$blocks = pdo_getall('core_mobile_blocks',array('type'=>1,'support <>'=>0,'plugin_id'=>$p['name']),array(),'','usenum desc',array('10'));
					if($blocks){
						foreach($blocks as &$b){
							$b['default']=json_decode($b['default'],true);
						}
						$navs2[$i]['name'] = $p['plugin_id'];
						$navs2[$i]['plugintitle']=$plugintitle;
						$navs2[$i]['navs'] = $blocks;
						$i  += 1;
					}
				}
				
			}
		}
		
		$return['navs0']=$navs0;
		$return['navs1']=$navs1;
		$return['navs2']=$navs2;
		$menus =array(
				array('title'=>'首页','iconimg'=>'../core/resource/images/diy/icon/gray_home.png','choseimg'=>'../core/resource/images/diy/icon/green_home.png','url'=>'jy_weishop/index/'),
				array('title'=>'产品','iconimg'=>'../core/resource/images/diy/icon/gray_cate.png','choseimg'=>'../core/resource/images/diy/icon/green_cate.png','url'=>'jy_weishop/goods.index/'),
				array('title'=>'新闻','iconimg'=>'../core/resource/images/diy/icon/gray_find.png','choseimg'=>'../core/resource/images/diy/icon/green_find.png','url'=>'jy_weishop/news.list/'),
				array('title'=>'我的','iconimg'=>'../core/resource/images/diy/icon/gray_people.png','choseimg'=>'../core/resource/images/diy/icon/green_people.png','url'=>'jy_weishop/member.index/'),
		);
		$item['setting']['window']['navigationBarTitleText']=$item['setting']['window']['navigationBarTitleText']?$item['setting']['window']['navigationBarTitleText']:$item['title'];
		$item['setting']['window']['navigationBarBackgroundColor']=$item['setting']['window']['navigationBarBackgroundColor']?$item['setting']['window']['navigationBarBackgroundColor']:'#ff0000';
		$item['setting']['footer']['iconstyle']=$item['setting']['footer']['iconstyle']?:0;
		$item['setting']['footer']['position']=$item['setting']['footer']['position']?$item['setting']['footer']['position']:'bottom';
		$item['setting']['footer']['menus']=!empty($item['setting']['footer']['menus']) ? $item['setting']['footer']['menus']:$menus;
		$item['setting']['bg'] = $item['setting']['bg'] ? $item['setting']['bg'] : array('bg'=>'');
		$return['item']=$item;
		$return['onlyplugin']=pdo_getcolumn('core_account_wxapp',array('web_id'=>$item['web_id'],'uniacid'=>$_SESSION['uniacid']),'plugin_name');
		$return['onlyplugin']=$return['onlyplugin']!='core'?$return['onlyplugin']:'jy_weishop';
		$return['edit']=3;
		$return['siteroot']=get_account_url();
		$return['account']=$_SESSION['account'];
		$return['extradata']=array();
		exi($return);
	}
}
if($_RQ['op']=='getnav'){
	$params=array();
	if(!empty($_RQ['title'])){
		$params['title like']='%'.trim($_RQ['title']).'%';
	}
	$navs=pdo_getall('core_mobile_blocks',$params,array(),'','usenum desc',array('10'));
	exi($navs);
}
if($_RQ['op']=='update'){
	//更新小程序：适用于插件小程序
	$id=intval($_RQ['id']);
	if(!$id){
		exi('请先选择要更新的小程序！','error');
	}
	$item=pdo_get('core_account_wxapp',array('id'=>$id,'uniacid'=>$_SESSION['uniacid']),array('version','wxapp_id'));
	if(!$item['wxapp_id']){
		exi('出现严重错误，找不到小程序关联模版导致无法更新！可能原因是，小程序类型不是插件小程序！','error');
	}
	$new_version=pdo_getcolumn('core_wxapp',array('id'=>$item['wxapp_id']),'version');
	if($new_version==$item['version']){
		exi('暂无更新！','error');
	}
	pdo_update('core_account_wxapp',array('version'=>$new_version,'status'=>0),array('id'=>$id));
	exi('更新成功！开始上传版本！','',array('op'=>'up','query'=>'id='.$id));
}
if($_RQ['op']=='result'){
	//授权结果处理
	if (empty($_RQ['auth_code'])){
		exit('授权登陆失败，请重试！');
	}
	$data=cfc('open')->get_authorization_info($_RQ['auth_code']);
	$info=cfc('open')->get_info($data['authorizer_appid']);
	
	$update=array(
		'appid'=>$data['authorizer_appid'],
		'access_token'=>$data['authorizer_access_token'],
		'expire'=>TIMESTAMP+$data['expires_in']-200,
		'refresh_token'=>$data['authorizer_refresh_token'],
		'title'=>$info['nick_name'],
		'oldid'=>$info['user_name'],
	);
	$id=intval($_RQ['id']);
	if(!$id){
		exi('授权失败！没有找到要授权的小程序，请联系管理员！','error');
	}
	pdo_update('core_account_wxapp',$update,array('id'=>$id,'uniacid'=>$_SESSION['uniacid']));
	confirm('授权成功！是否立即上传代码？',array('op'=>'up','query'=>'id='.$id),array('op'=>'list'));
}
if($_RQ['op']=='up'){
	//上传代码
	$id=intval($_RQ['id']);
	if(!$id){
		exi('请先选择要操作的小程序！','error');
	}
	$item=pdo_get('core_account_wxapp',array('id'=>$id,'uniacid'=>$_SESSION['uniacid']));
	if($item==2){
		//一键发布
		$wxapp=cfc('open',$id);
		$result=$wxapp->wxapp_sc();
		if($result){
			pdo_update('core_account_wxapp',array('status'=>1),array('id'=>$id,'uniacid'=>$_SESSION['uniacid']));
			confirm('上传成功！是否立即提交审核？',array('op'=>'sh','query'=>'id='.$id),array('op'=>'list'));
		}else{
			exi('上传失败，请联系管理员开通权限！','error');
		}
	}else{
		exi('','error',array('action'=>'wxapp.up','query'=>'id='.$item['id']));
	}
}
if($_RQ['op']=='sh'){
	//提交审核
	$id=intval($_RQ['id']);
	if(!$id){
		exi('请先选择要操作的小程序！','error');
	}
	$wxapp=cfc('open',$id);
	$result=$wxapp->wxapp_sh();
	if($result){
		pdo_update('core_account_wxapp',array('status'=>2),array('id'=>$id,'uniacid'=>$_SESSION['uniacid']));
		exi('提交成功！小程序已进入审核状态，请耐心等待审核结果！','',array('op'=>'list'));
	}else{
		exi('提交失败，请联系管理员！','error');
	}
}
if($_RQ['op']=='check'){
	//查询审核结果
	$id=intval($_RQ['id']);
	if(!$id){
		exi('请先选择要操作的小程序！','error');
	}
	$wxapp=cfc('open',$id);
	$result=$wxapp->wxapp_check();
	if($result=='success'){
		pdo_update('core_account_wxapp',array('status'=>3),array('id'=>$id,'uniacid'=>$_SESSION['uniacid']));
		confirm('您的小程序审核成功！是否立即发布？',array('op'=>'release','query'=>'id='.$id),array('op'=>'list'));
	}elseif($result=='wait'){
		exi('小程序还在审核中，请耐心等待！','error');
	}else{
		pdo_update('core_account_wxapp',array('status'=>0),array('id'=>$id,'uniacid'=>$_SESSION['uniacid']));
		exi('您的小程序审核不通过！具体原因为：'.$result.'请重新上传代码！','error');
	}
}
if($_RQ['op']=='release'){
	//发布小程序
	$id=intval($_RQ['id']);
	if(!$id){
		exi('请先选择要操作的小程序！','error');
	}
	$wxapp=cfc('open',$id);
	$wxapp->wxapp_release();
	pdo_update('core_account_wxapp',array('status'=>4),array('id'=>$id,'uniacid'=>$_SESSION['uniacid']));
	exi('发布成功！','',array('op'=>'list'));
}
if($_RQ['op']=='del'){
	//删除小程序
	$id=intval($_RQ['id']);
	if($id){
		pdo_delete('core_account_wxapp',array('id'=>$id,'uniacid'=>$_SESSION['uniacid']));
	}
	$del=trim($_RQ['del'],';');
	if($del){
		$del=explode(';',$del);
		foreach($del as $id){
			$id=intval($id);
			if($id){
				pdo_delete('core_account_wxapp',array('id'=>$id,'uniacid'=>$_SESSION['uniacid']));
			}
		}
	}
	exi('删除成功！');
}
if($_RQ['op']=='template'){
	//发布到模版市场，发布到模版市场是否需要设置价格和分类？暂时先不发布，直接保存为我的模版
	if($_RQ['postdata']){
		$post=get_postdata();
		$id=intval($post['wxapp_id']);
		if(!$id){
			exi('请先选择小程序！','error');
		}
		$data=pdo_get('core_account_wxapp',array('id'=>$id,'uniacid'=>$_SESSION['uniacid']),array('items','setting'));
		$insert=array(
			'uniacid'=>$_SESSION['uniacid'],
			'group_id'=>intval($post['tygroup_idpe']),
			'title'=>$post['title'],
			'image'=>$post['image'],
			'items'=>$data['items'],
			'setting'=>$data['setting']
		);
		pdo_insert('core_wxapp_template',$insert);
		exi('保存模版成功！');
	}else{
		$id=intval($_RQ['id']);
		if(!$id){
			exi('请先选择要保存的小程序！','error');
		}
		$return['item']=array('wxapp_id'=>$id);
		$return['groups']=pdo_getall('core_template_group',array(),array('id','title'));
		$return['htmls']=array(
			'type'=>'edit',
			'desc'=>'设置模版信息',
			'edit'=>array(
				array('type'=>'string','name'=>'title','title'=>'模版名称'),
				array('type'=>'select','name'=>'group_id','title'=>'模版类型','options'=>'groups'),
				array('type'=>'image','name'=>'image','title'=>'模版图片','help'=>'上传一张图片展示模版效果'),
			),
		);
		exi($return);
	}
}
if($_RQ['op']=='up_desc'){
	$cloud=core_setting('cloud');
	//设置上传参数
	if($_RQ['postdata']){
		$post=get_postdata();
		if(!$post['id']){
			exi('请先选择小程序！','error');
		}
		if(!is_numeric($post['newversion'])){
			exi('请先设置上传版本！且必须是整数或小数','error');
		}
		if(!$post['desc']){
			exi('请先设置版本说明！','error');
		}
		$_SESSION['wxapp_up']=array(
			'id'=>intval($post['id']),
			'version'=>$post['newversion'],
			'desc'=>$post['desc'],
			'plugin_name'=>$_SESSION['plugin_name'],
		);
		exi('','','wxapp.diy_up/');
	}
	$id=intval($_RQ['id']);
	if(!$id){
		exi('请先选择小程序！','error');
	}
	$item=pdo_get('core_account_wxapp',array('id'=>$id,'uniacid'=>$_SESSION['uniacid']),array('id','web_id','type','version','items'));
	$tpl=pdo_get('core_account_web_tpl',array('web_id'=>$item['web_id'],'tpl_id'=>0,'is_open'=>1,'uniacid'=>$_SESSION['uniacid']),array('id','web_id','tpl_id','items'));
	$groupid = $cloud['group'] ? $cloud['group'] : '0';
	if(!$groupid && $item['type'] !=2){
		exi('您不能上传DIY小程序，请联系管理员开通！','error');
	}
	if($item['type'] !=2 && $item['type'] !=7 && !$tpl['items']){
		exi('有页面没有任何设计内容，无效提交！','error');
	}
	$item['version']=$item['version']?$item['version']:'1.0';
	$num=substr(strrchr($item['version'],'.'),1);
	$pre=substr($item['version'],0,strrpos($item['version'],'.'));
	$num++;
	$newversion=$pre.'.'.$num;
	$item['newversion']=$newversion;
	$time = date('Y-m-d H:i:s',TIMESTAMP);
	$item['desc']=$item['desc']?$item['desc']:'新版本:'.$time.'发布！版本号：'.$item['newversion'];
	$return['item']=$item;
	$return['htmls']=array(
		'type'=>'edit',
		'tabs'=>array(
				array('op'=>$_SESSION['wxapptype']==8?'list':'dabaolist','title'=>'返回小程序列表'),
			),
		'edit'=>array(
			array('type'=>'string','name'=>'version','title'=>'当前版本','read'=>true),
			array('type'=>'string','name'=>'newversion','title'=>'新版本','help'=>'必须是整数或小数'),
			array('type'=>'string','name'=>'desc','title'=>'说明'),
		),
	);
	exi($return);
}
if($_RQ['op']=='up_app'){
	//上传小程序
	$id=intval($_RQ['id']);
	if($_RQ['fromweb'] && $id){
			$appid=pdo_getcolumn('core_account_wxapp',array('web_id'=>$id,'uniacid'=>$_SESSION['uniacid']),'id');
			if(!$appid){
				$insert=pdo_get('core_mobile_web',array('id'=>$id,'uniacid'=>$_SESSION['uniacid']),array('items','setting','title'));
				$insert['uniacid']=$_SESSION['uniacid'];
				$insert['type']=1;
				$insert['web_id']=$id;
				$insert['createtime']=time();
				pdo_insert('core_account_wxapp',$insert);
				$appid=pdo_insertid();
				pdo_update('core_mobile_web',array('wxapp_id'=>$appid),array('id'=>$id,'uniacid'=>$_SESSION['uniacid']));
			}
			$id=$appid;
	}
	if(!$id){
			exi('请先选择小程序！','error');
	}
	$type=pdo_getcolumn('core_account_wxapp',array('id'=>$id,'uniacid'=>$_SESSION['uniacid']),'type');
	$plugin_name=pdo_getcolumn('core_account_wxapp',array('id'=>$id,'uniacid'=>$_SESSION['uniacid']),'plugin_name');
	if($type==7){
		$pagespath='/pages/index/index';
	}else{
		if($plugin_name && $plugin_name!='core'){
			$pagespath='/'.$plugin_name.'/index/index';
		}else{
			$pagespath='/core/welcome/index';
		}
	}
	$return['htmls']=array(
			'type'=>'look',
			'desc'=>'上传小程序',
			'tabs'=>array(
				array('op'=>$_SESSION['wxapptype']==8?'list':'dabaolist','title'=>'小程序列表'),
				array('action'=>'core/wxapp.list/version_list/type=wxapp','title'=>'小程序版本列表'),
			),
			'look'=>array(
				array('type'=>'tip','title'=>'除了微信小程序，其他小程序都需要下载小程序版本，手动上传！本小程序默认路径：<red>'.$pagespath.'</red> 用于微信官方：发布版本，体验版本路径的设置！</br>其他小程序都是根据微信小程序，自动生成的。可能存在一点点样式兼容问题，可以反馈工单处理！'),
				array('type'=>'href','url'=>'core/wxapp.list/up_desc/id='.$id,'title'=>'微信小程序','help'=>'','btntitle'=>'一键上传'),
				array('type'=>'href','url'=>'core/wxapp.list/add_version/apptype=ttapp&id='.$id,'title'=>'抖音/头条小程序','btntitle'=>'生成新版本','help'=>''),
				array('type'=>'href','url'=>'core/wxapp.list/add_version/apptype=aliapp&id='.$id,'title'=>'支付宝小程序','btntitle'=>'生成新版本','help'=>''),
				array('type'=>'href','url'=>'core/wxapp.list/add_version/apptype=baiduapp&id='.$id,'title'=>'百度小程序','btntitle'=>'生成新版本','help'=>''),
				array('type'=>'href','url'=>'core/wxapp.list/add_version/apptype=qqapp&id='.$id,'title'=>'QQ小程序','btntitle'=>'生成新版本','help'=>''),
			),
	);
	exi($return);
}
if($_RQ['op']=='add_version'){
		//添加版本
		//判断上传权限
		$no_upwxapp=pdo_getcolumn('core_account_group',array('id'=>$_SESSION['account']['groupid']),'no_upwxapp');
		if($no_upwxapp){
			exi('您当前的会员套餐，不允许发布小程序！','','goback');	
		}
		$app_id=intval($_RQ['id']);
		$item=pdo_get('core_account_wxapp',array('id'=>$app_id));
		if(!$item){
			exi('指定小程序不存在！','error');
		}
		$item['setting']=$item['setting']?json_decode($item['setting'],true):array();
		$tpl=pdo_get('core_account_web_tpl',array('web_id'=>$item['web_id'],'is_open'=>1,'tpl_id'=>0,'uniacid'=>$_SESSION['uniacid']),array('id','web_id','items','setting','title'));
		$tpl['setting']=$tpl['setting']?json_decode($tpl['setting'],true):array();
		$tpl['setting']['window']=$item['setting']['window'];
		$params=array(
			'appid'=>$item['appid'],
			'tt_appid'=>$item['tt_appid'],
			'ali_appid'=>$item['ali_appid'],
			'baidu_appid'=>$item['baidu_appid'],
			'qq_appid'=>$item['qq_appid'],
			'type'=>$item['type'],
			'is_wz'=>$item['is_wz'],
			'title'=>$item['title'],
			'logo'=>tomedia($item['logo']),
			'siteroot'=>get_account_url(),
			'uniacid'=>$_SESSION['uniacid'],
			'app_id'=>$item['id'],
			'att_url'=>ATTACHMENT_URL,
			'items'=>$tpl['items']?:$item['items'],
			'setting'=>ijson_encode($tpl['setting']),
			'url'=>$item['url'],
			'web_id'=>$item['web_id'],
			'isdiyindex'=>$item['isdiyindex'],
			'plugin_name'=>$item['plugin_name'],
			'istabbar'=>$item['istabbar'],
			'sharetitle'=>$item['sharetitle'],
			'sharedesc'=>$item['sharedesc'],
			'shareimg'=>tomedia($item['shareimg']),
		);
		if($item['type']==8){
			//多页小程序，读取额外小程序页面
			$cloudapptype=$_RQ['apptype']!='wxapp'?$_RQ['apptype']:'';
			$params['pages']=pdo_getall('core_account_web_tpl',array('tpl_id'=>$tpl['id'],'uniacid'=>$_SESSION['uniacid']));
			$params['pages'][]=pdo_get('core_account_web_tpl',array('id'=>$tpl['id'],'uniacid'=>$_SESSION['uniacid']));
			if($params['plugin_name'] !='core'){
				$params['cloud_id']=pdo_getcolumn('core_wxapp',array('name'=>$item['plugin_name']),'cloud_id');
				if(empty($params['cloud_id'])){
					exi('未安装本['.$return['apptypes'][$_RQ['apptype']].']应用小程序，请联系管理员！也可以前往《打包小程序》，实现需求！','error');
				}
			}
		}
		if($item['type']==2){
			//应用小程序，读取应用ID
			$cloudapptype=$_RQ['apptype']!='wxapp'?$_RQ['apptype']:'';
			$params['cloud_id']=pdo_getcolumn('core_wxapp',array('id'=>$item['wxapp_id']),'cloud_id');
			if(empty($params['cloud_id'])){
				exi('未安装本['.$return['apptypes'][$_RQ['apptype']].']应用小程序，请联系管理员！也可以前往《打包小程序》，实现需求！','error');
			}
			
		}
		$menu=pdo_getcolumn('core_diy_menu',array('uniacid'=>$_SESSION['uniacid'],'status'=>1,'plugin'=>'core'),'data');
		if($menu){
			$menu=json_decode($menu,true);
			$params['menu']=$menu;
		}
		if($params['is_wz']){
			$open_user=pdo_get('core_open_user',array('id'=>$_SESSION['openid']));
			if($open_user){
				$params['uniacid']=$open_user['open_uid'];
				$params['siteroot']=pdo_getcolumn('core_open',array('id'=>$open_user['open_id']),'siteroot');
				if(empty($params['siteroot'])){
					exi('请先设置第三方平台域名,联系管理员设置！','error','goback');
				}
			}else{
				exi('非第三方进入，不可上传支持第三方的小程序！','error','goback');
			}
					
		}
		$post=array('params'=>base64_encode(ijson_encode($params)),'apptype'=>$_RQ['apptype']);
		$res=cloud_request('wxapp.release_app.login',$post);
		exi('生成版本成功,请下载发布！','','/wxapp.list/version_list/id='.$app_id.'&type='.$_RQ['apptype']);
}
if($_RQ['op']=='version_list'){
	//版本列表，显示指定小程序的版本
	$app_id=intval($_RQ['id']);
	$params=array('app_id'=>$app_id,'uniacid'=>$_SESSION['uniacid']);
	if($_RQ['page']){
		$params['page']=intval($_RQ['page']);
	}
	if($_RQ['type']=='qqapp'){
		$return=cloud_request('wxapp.qqapp_up.list',$params);
	}elseif($_RQ['type']=='aliapp'){
		$return=cloud_request('wxapp.aliapp_up.list',$params);
	}elseif($_RQ['type']=='baiduapp'){
		$return=cloud_request('wxapp.baiduapp_up.list',$params);
	}elseif($_RQ['type']=='ttapp'){
		$return=cloud_request('wxapp.ttapp_up.list',$params);
	}else{
		$return=cloud_request('wxapp.up_log.list',$params);
	}
	
	$return['htmls']=array(
		'type'=>'list',
		'tabs'=>array(
			array('op'=>'version_list','query'=>'type=wxapp&id='.$app_id,'title'=>'小程序版本列表'),
			array('op'=>'version_list','query'=>'type=ttapp&id='.$app_id,'title'=>'头条/抖音版本列表'),
			array('op'=>'version_list','query'=>'type=aliapp&id='.$app_id,'title'=>'支付宝版本列表'),
			array('op'=>'version_list','query'=>'type=baiduapp&id='.$app_id,'title'=>'百度小程序列表'),
			array('op'=>'version_list','query'=>'type=qqapp&id='.$app_id,'title'=>'QQ小程序列表'),
		),
		'list'=>array('tip'=>'1、下载小程序，然后用小程序发布工具(微信发布工具：https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)，上传发布小程序即可！</br>2、<red>如果第一次打开项目，出现异常，有时候是一些工具存在问题，可以关闭工具再次打开试试，或者预览模式试试！</red></br>3、<red>【注意】:如果支付宝小程序（或其他小程序），开发工具打开是空白的，或内容不加载出来，很有可能是：1、生成本小程序包的小程序不存在了，2、支付宝工具（左上角）没有关联小程序；3、网站不支持https</red>','delall'=>false,'del_one'=>false,'edit'=>false,'pagelist'=>false,'data'=>'list','list'=>array(
			array('type'=>'string','title'=>'生成任务ID','name'=>'id'),
			array('type'=>'string','title'=>'小程序名称','name'=>'title'),
			array('type'=>'time','title'=>'版本生成时间','name'=>'createtime'),
		),'action'=>array(
			array('type'=>'open','url'=>'zipfile','title'=>'下载'),
		)),
	);
	exi($return);
}
if($_RQ['op']=='page_choose'){
	//选择链接
	if(!$_SESSION['wxapp_id']){
		exi('请先选择小程序！','error');
	}
	$list=get_wxapp_pages();
	$list=$list?$list:array();
	foreach($list as &$item){
		$item['name']=$item['page'];
	}
	$return['list']=$list;
	$return['htmls']=array(
		'type'=>'list',
		'tabs'=>array(
			array('op'=>'page_choose','title'=>'小程序系统页面'),
			array('action'=>'tools.link','title'=>'系统H5页面'),
		),
		'list'=>array('data'=>'list','edit'=>false,'delall'=>false,'del_one'=>false,'list'=>array(
			array('type'=>'string','name'=>'title','title'=>'页面名称'),
			array('type'=>'string','name'=>'name','title'=>'页面路径'),	
		),'action'=>array(
			array('type'=>'modal_result','name'=>'name','title'=>'选取'),
		)),
		'search_one'=>array('name'=>'title','add'=>false),
	);
	exi($return);
}
if($_RQ['op']=='mobile'){
	//小程序
	$id=intval($_RQ['id']);
	if(!$id){
			exi('请先选择小程序！','error');
	}
	$web_id=pdo_getcolumn('core_account_wxapp',array('id'=>$id,'uniacid'=>$_SESSION['uniacid']),'web_id');
	if(!$web_id){
		$insert=pdo_get('core_account_wxapp',array('id'=>$id,'uniacid'=>$_SESSION['uniacid']),array('items','title','setting'));
		$insert['uniacid']=$_SESSION['uniacid'];
		$insert['createtime']=time();
		$insert['wxapp_id']=$id;
		$insert['title']=$data['title'];
		if($insert['items']){			
				//获取开发者自己的组件，并上传
				$local_blocks=pdo_getall('core_mobile_blocks',array('madehtml <>'=>''),array('cloud_id','default','madehtml'),'cloud_id');
				if($local_blocks){
					foreach($local_blocks as &$row){
						$row['madehtml']=cfc('files')->source_read($row['madehtml']);
						$row['default']=$row['default']?json_decode($row['default'],true):array();
					}
				}
				//设计完成后，对接云端生成页面
				$post=array('items'=>base64_encode($insert['items']),'setting'=>base64_encode($insert['setting']),'local_blocks'=>$local_blocks);
				$html=cloud_request('diy.mobile.made',$post);
				//将获得生成的html代码存入文件
				$html=cfc('files')->source_save($html,'page','html','微站页面：'.$id);
				$insert['html']=$html;
		}
		pdo_insert('core_mobile_web',$insert);
		$web_id=pdo_insertid();
		pdo_update('core_account_wxapp',array('web_id'=>$web_id),array('id'=>$id,'uniacid'=>$_SESSION['uniacid']));
	}
	$return['item']['url']=custom_url('core/welcome//id='.$web_id,true);
	$return['htmls']=array(
			'type'=>'look',
			'desc'=>'手机端',
			'look'=>array(
				array('type'=>'copy','name'=>'url','title'=>'手机站链接','help'=>''),
				array('type'=>'ewm','name'=>'url','title'=>'手机站二维码','help'=>''),
			),
	);
	exi($return);
}
if($_RQ['op']=='renzheng'){
	//上传认证文件
	if($_RQ['postdata']){
		$post=get_postdata();
		if(!$post['renzheng']){
			exi('请先上传认证文件！','error');
		}
		$filename=pdo_getcolumn('core_attachment',array('attachment'=>$post['renzheng']),'title');
		if(preg_match('/[^\w\.-]/',$filename)){
			exi('认证文件名不合法！','error');
		}
		$file_data=cfc('files')->source_read($post['renzheng']);
		if(strlen($file_data)>100){
			exi('上传失败！认证文件内容超过限制！','error');
		}
		file_put_contents(ROOT_D.'/'.$filename.'.txt',$file_data);
		exi('上传成功！');
	}
	$return['item']=array();
	$return['htmls']=array(
		'type'=>'edit',
		'desc'=>'上传认证文件',
		'edit'=>array(
			array('type'=>'upfile','title'=>'认证文件','name'=>'renzheng','ftype'=>'other','help'=>'<red>这里只是用于校验认证文件上传而已，不做保存(上传框是看不到已上传的文件的)</red>！本功能用于上传认证文件到站点根目录！例如，小程序或公众号设置授权域名时，提示需要上传认证文件。请下载下来，并在此处上传。'),
		),
	);
	exi($return);
}